#include "Server.h"

int main(int argc, char const *argv[])
{
    // 判断输入是否正确
    if(argc != 3)
    {
        printf("输入的格式错误 %s ip port\n" , argv[0]);
        exit(1);
    }
    
    // 初始化 TCP 服务器
    int sock = tcp_server_init( argv[1] , atoi(argv[2]) );

    // 声明线程号
    pthread_t tid_recv;
    pthread_t tid_send;

    // 创建线程
    pthread_create( &tid_recv , NULL , pthread_recv , (void *)&sock);
    pthread_create( &tid_send , NULL , pthread_send , (void *)&sock);

    // 等待线程结束


    // 当接收线程结束时 发送线程如何结束
    
#if 0 // 方法一 让 发送线程为分离态
    pthread_join(tid_recv , NULL);
    pthread_detach(tid_send);

    printf("服务器结束\n");
#elif 1 // 方法二 获取线程返回值 然后判是否为断开连接 如果是 则 终止发送线程
    // 获取 接收线程的返回值
    void * rect_return_ptr = NULL;
    pthread_join(tid_recv , &rect_return_ptr);
    int rect_return_val = *((int *)rect_return_ptr);

    if(1 == rect_return_val)
    {
        // 终止线程 终止发送线程
        printf("发送线程结束");
        pthread_cancel(tid_send);
    }

#endif      
    printf("服务器结束\n");
    // 关闭服务器
    tcp_server_close();
    return 0;
}

